import { queryUserList } from '@/services/demo/UserController';
import { useEffect, useRef, useState } from 'react';

/**
 * 根据页码和页容量获取学生数据，得到一个响应结果
 * 并且，当页码和页容量变化时，将重新获取学生数据
 */
export function useFetchData(current = 1, pageSize = 10) {
  const [resp, setResp] = useState<any>([]);
  useEffect(() => {
    console.log('执行了useFetchData');
    (async () => {
      const resp = await queryUserList({
        current: 0,
        pageSize: 10,
      });
      setResp(resp?.data?.list ?? []);
    })();
  }, [current, pageSize]);
  return resp;
}

/**获取历史值的 Hook
 * 作用是跟踪给定值的前一个状态，这在某些情况下对于比较当前值和前一个值非常有用，
 * 比如在处理动画或者判断某个值是否发生变化时
 * @param value 任意类型的值，通常是来自组件的状态或属性，需要跟踪其前一个值
 * @returns 返回value的历史值如果value从未改变过，则返回undefined
 */
export const usePrevious = (value: unknown) => {
  const historyRef = useRef<any[]>([]);
  useEffect(() => {
    historyRef.current = [value, ...historyRef.current];
  }, [value]);
  return historyRef.current;
};
